CodeIgniter JOINを使うデータ取得 サンプルコード
ちょっと直感的にわかりにくかったので、メモしておきます。
次のような2つのテーブルがあります。
ユーザーと、ユーザーの友達のテーブルです。
users
|id|name|email|
|1|エレン|elen@onlineconsultant.jp|
|2|アルミン|almin@onlineconsultant.jp|
friends
|id|user_id|name|birthday|
|1|1|ミカサ|1月4日|
|2|1|リヴァイ|2月15日|
|3|2|ベルナルド|4月30日|
1月4日の友達を検索して、誰の友達なのかと、友達の誕生日と、友達の名前を表示します。
$this->load->database(); $where = array('friends.birthday' => "1月4日"); $this->db->select('friends.birthday, friends.name as friend_name, users.name as user_name, users.email'); $this->db->from('friends'); $this->db->join('users', 'users.id = friends.user_id'); $this->db->where($where); $query = $this->db->get(); foreach($query->result() as $row){ $friend_name = $row->friend_name; //ミカサが入ります $user_name = $row->user_name; //エレンが入ります }
発行されるSQL文は次のようになります。
SELECT `friends`.`birthday`, `friends`.`name` as friend_name, `users`.`name` as user_name, `users`.`email` FROM (`friends`) JOIN `users` ON `users`.`id` = `friends`.`user_id` WHERE `friends`.`birthday` = '1月4日'